Skip to main content

從零開始:LINE OA + Gemini + Vercel 打造 LINE AI Agent 客服 實務指南

這份指南適合誰?

如果你是:

  • 想為自己的產品加入 AI 客服的開發者
  • 對 LINE Bot 開發有興趣的工程師
  • 想了解如何整合 AI 的技術人員

這份指南將帶你一步步實作出完整的 AI 客服系統。

專案成果預覽

完成後,你將擁有:

  • ✅ 一個能在 LINE 上自動回答問題的機器人
  • ✅ 使用 Google Gemini AI 的智能回應系統
  • ✅ 部署在雲端的 24/7 服務
  • ✅ 每月成本低於 $10 美元(約 300 台幣)

第一部分:準備工作

1.1 需要的帳號

  1. LINE Developers

  2. Google AI Studio

  3. Vercel

1.2 開發環境

# 必要軟體
- Python 3.8 以上
- Git
- VS Code 或其他編輯器

# 安裝 Python 套件
pip install flask line-bot-sdk google-generativeai

第二部分:核心概念說明

2.1 系統架構

我們的系統分成兩層:

用戶發問 → L1檢索層(找相關資料) → L2 AI層(生成回答) → 回覆用戶

為什麼要分兩層?

  • L1 快速找到相關知識(< 0.1秒)
  • L2 用 AI 生成自然的回答(1-2秒)
  • 結合速度與智能的優點

2.2 運作流程

  1. 用戶在 LINE 發送訊息
  2. LINE 將訊息傳到我們的伺服器
  3. 系統分析問題並生成回答
  4. 透過 LINE API 回覆給用戶

第三部分:動手實作

3.1 建立專案結構

my-line-bot/
├── src/
│ ├── knowledge_retriever.py # L1 知識檢索
│ └── gemini_responder.py # L2 AI 回應
├── api/
│ └── webhook.py # 接收 LINE 訊息
├── requirements.txt # 套件清單
└── vercel.json # 部署設定

3.2 Step 1: 建立知識庫 (L1層)

創建 src/knowledge_retriever.py

class KnowledgeRetriever:
def __init__(self):
# 定義你的產品知識
self.knowledge_base = {
"產品介紹": {
"keywords": ["什麼", "功能", "介紹"],
"content": "我們的產品可以..."
},
"價格方案": {
"keywords": ["價格", "費用", "多少錢"],
"content": "基本版免費,進階版每月..."
},
# 加入更多知識...
}

def retrieve(self, query):
"""根據用戶問題找出相關知識"""
results = []
for category, info in self.knowledge_base.items():
# 檢查關鍵字是否匹配
if any(kw in query for kw in info["keywords"]):
results.append(info["content"])
return results

3.3 Step 2: 整合 AI (L2層)

創建 src/gemini_responder.py

import google.generativeai as genai

class GeminiResponder:
def __init__(self, api_key):
genai.configure(api_key=api_key)
self.model = genai.GenerativeModel('gemini-pro')

def generate_response(self, query, knowledge):
# 建立 AI 的指令
prompt = f"""
你是客服助理,請根據以下資訊回答用戶問題。

相關知識:
{knowledge}

用戶問題:{query}

請用友善、簡潔的方式回答。
"""

response = self.model.generate_content(prompt)
return response.text

3.4 Step 3: 處理 LINE Webhook

創建 api/webhook.py

from flask import Flask, request, abort
import json
import requests
import os

app = Flask(__name__)

# 你的 LINE 憑證
CHANNEL_SECRET = os.getenv('LINE_CHANNEL_SECRET')
CHANNEL_ACCESS_TOKEN = os.getenv('LINE_CHANNEL_ACCESS_TOKEN')

@app.route("/api/webhook", methods=['POST'])
def webhook():
# 接收 LINE 的訊息
body = request.get_data(as_text=True)
events = json.loads(body).get('events', [])

for event in events:
if event['type'] == 'message':
# 取得用戶訊息
user_message = event['message']['text']
reply_token = event['replyToken']

# 處理訊息(呼叫 L1 + L2)
response = process_message(user_message)

# 回覆用戶
reply_to_line(reply_token, response)

return 'OK'

def reply_to_line(reply_token, text):
"""透過 LINE API 回覆訊息"""
url = 'https://api.line.me/v2/bot/message/reply'
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {CHANNEL_ACCESS_TOKEN}'
}
data = {
'replyToken': reply_token,
'messages': [{'type': 'text', 'text': text}]
}
requests.post(url, headers=headers, json=data)

3.5 Step 4: 部署到 Vercel

  1. 創建 vercel.json
{
"version": 2,
"builds": [
{
"src": "api/webhook.py",
"use": "@vercel/python"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "/api/webhook.py"
}
]
}
  1. 創建 requirements.txt
Flask==2.3.0
google-generativeai==0.3.2
requests==2.31.0
  1. 部署指令:
# 安裝 Vercel CLI
npm i -g vercel

# 部署
vercel

# 設定環境變數
vercel env add LINE_CHANNEL_SECRET
vercel env add LINE_CHANNEL_ACCESS_TOKEN
vercel env add GEMINI_API_KEY

# 部署到生產環境
vercel --prod

第四部分:設定 LINE

4.1 創建 LINE Bot

  1. 登入 LINE Developers Console
  2. 創建新的 Provider
  3. 創建新的 Messaging API Channel
  4. 取得:
    • Channel Secret(在 Basic settings)
    • Channel Access Token(在 Messaging API,點擊 Issue)

4.2 設定 Webhook

  1. 取得 Vercel 網址(例如:https://your-bot.vercel.app
  2. 在 LINE Console 設定:
    • Webhook URL: https://your-bot.vercel.app/api/webhook
    • Use webhook: 開啟
    • Auto-reply: 關閉

4.3 測試

  1. 掃描 QR Code 加好友
  2. 發送訊息測試
  3. 應該會收到 AI 回應!

第五部分:常見問題解決

問題 1:Webhook 驗證失敗

原因:LINE 會發送空的測試請求 解決

# 特別處理空 events
if len(events) == 0:
return 'OK' # 直接回應 200

問題 2:回應太慢

原因:AI 生成需要時間 優化

  • 使用更快的 AI 模型(如 gemini-flash)
  • 減少 prompt 長度
  • 考慮加入快取機制

問題 3:成本控制

估算

  • Gemini API:每 1000 次約 $1 美元
  • Vercel:免費版每月 100GB-Hours
  • LINE:Official Account 免費版夠用

第六部分:進階功能

6.1 加入圖片回應

def reply_image(reply_token, image_url):
data = {
'replyToken': reply_token,
'messages': [{
'type': 'image',
'originalContentUrl': image_url,
'previewImageUrl': image_url
}]
}

6.2 記錄對話歷史

# 使用資料庫儲存
conversations = {}

def save_conversation(user_id, message, response):
if user_id not in conversations:
conversations[user_id] = []
conversations[user_id].append({
'message': message,
'response': response,
'timestamp': datetime.now()
})

6.3 Rich Menu 快速選單

在 LINE Console 設計圖形化選單,讓用戶快速選擇常見問題。

第七部分:實戰經驗分享

7.1 開發心得

  1. 從簡單開始

    • 先做基本功能
    • 確認能收發訊息
    • 再逐步加入 AI
  2. 測試很重要

    • 準備測試問題清單
    • 模擬用戶真實問法
    • 處理邊界情況
  3. 維護知識庫

    • 定期更新產品資訊
    • 收集常見問題
    • 優化關鍵字匹配

7.2 踩過的坑

  1. Vercel 部署問題

    • 某些套件無法編譯 → 改用純 Python 套件
    • 環境變數沒生效 → 部署後要重新設定
  2. LINE API 限制

    • Reply token 30秒過期 → 快速回應
    • 訊息長度限制 5000 字 → 分段發送
  3. AI 回應品質

    • 太囉嗦 → 調整 prompt
    • 答非所問 → 改善知識檢索

第八部分:成本與效益分析

8.1 實際成本

以每月 10,000 次對話計算:

  • Gemini API:約 $10 美元
  • Vercel:免費
  • LINE OA:免費(推播另計)
  • 總計:約 300 台幣/月

8.2 效益評估

  • 節省客服人力:1-2 名人員
  • 24/7 即時回應:提升滿意度
  • 統一回答品質:減少錯誤

8.3 ROI 計算

月節省成本 = 人力成本 - 系統成本
= 35,000 - 300
= 34,700 元/月

總結

恭喜你!完成這份指南後,你已經學會:

  1. ✅ 建立 LINE Bot 的完整流程
  2. ✅ 整合 Google Gemini AI
  3. ✅ 部署到 Vercel 雲端平台
  4. ✅ 處理常見問題和優化

下一步建議

  1. 擴充知識庫:加入更多產品資訊
  2. 優化 AI:調整 prompt 提升回答品質
  3. 加入監控:追蹤使用情況和錯誤
  4. 收集回饋:了解用戶需求持續改進

資源連結

需要幫助?


授權聲明:本教學採用 MIT 授權,歡迎自由使用。

最後更新:2025/09/02

文檔迭代紀錄

協作夥伴戳記

  1. 2025/09/02 Claude 4.1 Opus Claude Code